DCOP

DCOP (Desktop COmmunication Protocol) とは、プロセス間またはソフトウェアコンポーネント間の軽量なプロセス間通信システムである。このシステムの主眼は、アプリケーション群が相互にやり取りして、全体として複雑なタスクを実施できるようにすることである。基本的にDCOPは「遠隔制御」システムであり、あるアプリケーションやスクリプトから他のアプリケーションの助けを得ることを可能にする。X Window Systemのクライアント間通信プロトコルをベースとして構築されている。

DCOPを使うことで、新たなアプリケーションを一から書かなくとも新機能を実現できるようになる。KDEのアプリケーションとライブラリはDCOPを多用しており、多くのKDEアプリケーションはDCOPの機構を通してスクリプトから制御できる。

最近のKDEシステムでは、全てのKDEアプリケーションが基本的なDCOPインタフェースを備えており、これはそのアプリケーションの作者が明示的にDCOPを使用していない場合でもそのようになっている。例えば、全てのアプリケーションが "quit" コマンドによるアプリケーションのクローズを自動的にサポートしている。

DCOPを組み込んだアプリケーションとシェルから通信するコマンド行ツールとして 'dcop'(小文字である点に注意)がある。また、同じインタフェースを提供するGUIツールとして 'kdcop' がある。

例えば、KDEデスクトップには一定時間間隔で背景の壁紙を切り換える機能がある。しかし、今の壁紙が気に入らないとき、それを即座に簡単に切り換えることはできない。また、ある壁紙を実際に見てみて、今後表示されないようにしたいと思った場合も、簡単に削除する方法はない。

しかし、dcopを使えば、そのような操作が簡単に追加できる。次のコマンド

 dcop kdesktop KBackgroundIface changeWallpaper

は、シェルから壁紙を次に切り換えさせるものである。そして、次のコマンド

 dcop kdesktop KBackgroundIface currentWallpaper 1

は、デスクトップ 1 の現在の壁紙のファイル名を得ることができる(KDEを含むXのデスクトップ環境では、仮想デスクトップを複数サポートしているのが一般的である)。これらを組み合わせてシェルスクリプトを組めば、壁紙を切り換えて、前に表示していた壁紙を削除することができる。例えば、次のようになる。

 OLDWALLPAPER=`dcop kdesktop KBackgroundIface currentWallpaper 1`
 dcop kdesktop KBackgroundIface changeWallpaper
 rm "$OLDWALLPAPER"

このようにDCOPによって、アプリケーションが本来持っていなかった機能を簡単に追加することが可能となる。


Developed by StudentB